package com.sinafenqi.designDemo.proxy.cglib;

import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author hujinsheng
 * @project DesignModeproxy
 * @create 2017-11-07 11:14
 **/
public class LiudehuaProxy implements MethodInterceptor {
    @Override
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

        if (method.getName().equals("sing")) {
            System.out.println("我是他的经纪人，要找他唱歌得先给十万块钱！！");
            //已经给钱了，经纪人自己不会唱歌，就只能找刘德华去唱歌！
            return methodProxy.invokeSuper(o,objects); //代理对象调用真实目标对象的sing方法去处理用户请求
        }
        //如果调用的是代理对象的dance方法
        if (method.getName().equals("dance")) {
            System.out.println("我是他的经纪人，要找他跳舞得先给二十万块钱！！");
            //已经给钱了，经纪人自己不会唱歌，就只能找刘德华去跳舞！
            return methodProxy.invokeSuper(o,objects);//代理对象调用真实目标对象的dance方法去处理用户请求
        }
        return null;
    }
}
